// easy

// 给定两个字符串s和t，判断s和t是否使用了相同的字符构成（字符出现的种类和数目都相同）

// 1. 先判断字符串s和t的长度，不一样直接返回false
// 2. 分别遍历字符串s和t，先遍历字符串s，用哈希表存储字符串s中字符出现的频次
// 3. 再遍历字符串t，哈希表中减去对应字符的频次，出现频次小于0，则输出false
// 4. 如果没有出现频次小于0，则输出true

function isAnagram(s, t) {
    if (s.length !== t.length) {
        return false
    }
    let strDict = new Map()
    for (let i = 0; i < s.length; i++) {
        if (strDict.has(s[i])) {
            strDict.set(s[i], strDict.get(s[i]) + 1)
        } else {
            strDict.set(s[i], 1)
        }
    }

    for (let i = 0; i < t.length; i++) {
        if (strDict.has(t[i])) {
            strDict.set(t[i], strDict.get(t[i]) - 1)
            if (strDict.get(t[i]) < 0) {
                return false
            }
        } else {
            return false
        }
    }

    return true
}

let s = "anagram", t = "nagaram"

console.log(isAnagram(s, t))

var isAnagram2 = function(s, t) {
    if(s.length !== t.length) {
        return false
    }
    let arr = new Array(26).fill(0)
    let base = 'a'.charCodeAt()
    for(let i of s) {
        arr[i.charCodeAt() - base]++
    }
    for(let i of t) {
        if(!arr[i.charCodeAt() - base]) {
            return false
        }
        arr[i.charCodeAt() - base]--
    }
    return true
};
let s1 = "anagram", t1 = "nagaraq"
console.log(isAnagram2(s1, t1))